/*
 * InterpreteComandosServer.h
 *
 *  Created on: 24/06/2014
 *      Author: loreyalan
 */

#ifndef INTERPRETECOMANDOSSERVER_H_
#define INTERPRETECOMANDOSSERVER_H_

#include "defines.h"
//Comandos
#include "ComandoServidor.h"
#include "ComandoMover.h"
#include "ComandoReparar.h"
#include "ComandoCrearAve.h"
#include "ComandoCrearLadrillo.h"
#include "ComandoCrearTorta.h"
#include "ComandoDeleteAve.h"
#include "ComandoDeleteLadrillo.h"
#include "ComandoDeleteTorta.h"
#include "ComandoLanzarLadrillo.h"
#include "ComandoFinTramo.h"
#include "ComandoFinNivel.h"
#include "ComandoFinPartida.h"
#include "ComandoActRanking.h"
#include "ComandoInitNivel.h"
#include "ComandoInitTramo.h"
#include "ComandoInitPartida.h"
#include "ComandoComenzar.h"

#include "map"

using namespace std;

class InterpreteComandosServer {
private:
	//Instancia del interprete.
    static InterpreteComandosServer *instance;
    //Constructor privado por ser un singleton.
	InterpreteComandosServer();
	//Mapa con los comandos por accion.
	map<int, ComandoServidor *> mapaComandos;

public:
	/*Para obtener la instancia si la hay, sino generarla. */
	static InterpreteComandosServer *getInstance();
	/*Devuelve el comando que atiende la accion solicitada en la estructura t_action*/
	ComandoServidor *getComando(t_accion *action);
	/*Destructor*/
	~InterpreteComandosServer();
};

#endif /* INTERPRETECOMANDOSSERVER_H_ */
